package com.lecture.java8.multithreading;

import lombok.SneakyThrows;

/**
 * @author luyn
 * @version 1.0
 * @description 测试thread类中的常用方法
 * @date 2021/1/13 14:42
 *
 * 1：start()启动当前线程，调用当前线程的run方法
 * 2：run()通常需要重写thread类中的此方法，将创建的线程要执行的操作声明在此方法中
 * 3：currentThread()静态方法，返回当前执行代码的线程。
 * 4：getName()：获取当前线程的名字。
 * 5：setName()：设置当前线程的名字
 * 6：yield()：释放当前cpu的执行权
 * 7：join()：在线程a中调用线程B的join方法，此时线程A就进入阻塞状态，直到线程B完全执行完以后，线程A才结束阻塞状态，
 * 8：stop()：以过时，当执行此方法时强制结束当前线程。
 * 9：sleep()：
 * 10：isAlive()：判断当前线程是否存活/
 *
 * 线程的优先级
 * MIN_PRIORITY = 1;
 * NORM_PRIORITY = 5;
 * MAX_PRIORITY = 10;
 * 1：getPriority();获取当前线程的优先级
 * 2：setPriority()；设置线程的优先级
 *
 */
public class ThreadMethonTest {
    public static void main(String[] args) throws InterruptedException {
        HelloThread helloThread = new HelloThread();
        //设置线程的优先级
        helloThread.setPriority(Thread.MAX_PRIORITY);
        helloThread.start();
        for (int i = 0; i < 100; i++) {
            if (i % 2 != 0){
                System.out.println(Thread.currentThread().getName()+ "：" +i);
            }
            if(i == 10) {
                helloThread.join();
            }
        }
        System.out.println("main中hello线程状态：" + helloThread.isAlive());
    }
}
class HelloThread extends Thread{
    @SneakyThrows
    @Override
    public void run() {
        this.setName("hello线程");
        for (int i = 0; i < 100; i++) {
            if(i % 2 == 0) {
                System.out.println(Thread.currentThread().getName()+ "：" +i);
            }
//            if (i % 20 == 0) {
//                Thread.yield();
//                Thread.sleep(2000);
//            }
        }
        System.out.println("hell线程存活状态：" + isAlive());
    }
}